package name.caiyao.fakegps.hook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

import android.os.Environment;
import android.util.Log;

/**
 * 配置文件工具类
 * 
 * @author
 * @version 1.0
 * 
 */
public final class ToolProperties extends Properties {

	private static Properties property = new Properties();
	
	
	public static String getSDCardPath() {
		if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
			File sdcardDir = Environment.getExternalStorageDirectory();
			if (!sdcardDir.canWrite()) {
				
			}
			return sdcardDir.getPath();
		}
		return "";
	} 

	public static String readProp(String fileName, String key) {
		String value = "";
		try {
			InputStream in = new FileInputStream(fileName);
			property.load(in);
			value = property.getProperty(key);
		} catch (Exception e1) {
			e1.printStackTrace();
		}

		return value;
	}

	public static String readProp(String fileName, String key, String defaultValue) {
		String value = "";
		try {
			InputStream in = new FileInputStream(fileName);
			property.load(in);
			value = property.getProperty(key, defaultValue);
		} catch (Exception e1) {
			e1.printStackTrace();
		}

		return value;
	}

	public static void setProp(String fileName, String key, String value) {
		Properties prop = new Properties();
		File file = new File(fileName);
		try {
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs();
			}

			if (!file.exists()) {
				try {
					// 在指定的文件夹中创建文件
					file.createNewFile();
				} catch (Exception e) {
				}
			}
			InputStream fis = new FileInputStream(fileName);
			// 从输入流中读取属性列表（键和元素对）
			prop.load(fis);
			// 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
			// 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
			OutputStream fos = new FileOutputStream(fileName, false);
			prop.setProperty(key, value);
			// 以适合使用 load 方法加载到 Properties 表中的格式，
			// 将此 Properties 表中的属性列表（键和元素对）写入输出流
			prop.store(fos, "Update '" + key + "' value");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
